Nel campo dei sistemi informatici, concorrenza a livello applicativo è il sovrapposizione deliberata di flussi logici di controllo per migliorare prestazioni e reattività. È un'astrazione funzionale: un programma viene suddiviso in compiti indipendenti che possono essere intercalati o eseguiti in parallelo.
1. La Tassonomia della Concorrenza
Gli sviluppatori scelgono generalmente tra tre meccanismi fondamentali per gestire questi flussi concorrenti:
- Processi: Alta isolamento con spazi di indirizzamento separati; richiede IPC mediato dal kernel.
- Multiplexing I/O: Un singolo flusso che cambia manualmente tra eventi "pronti" (macchine a stati).
- Thread: Flussi leggeri che condividono uno spazio di indirizzamento virtuale unico per uno scambio semplice dei dati.
2. Esecuzione Logica vs Fisica
Mentre tutti i programmi paralleli sono concorrenti, non tutti i programmi concorrenti sono paralleli. Il parallelismo è l'esecuzione fisica di flussi su core hardware separati. La concorrenza è il disegno logico che permette tale esecuzione.
TERMINALbash — 80x24
> Ready. Click "Run" to execute.
>